package com.moorror.codegenvel.db.sqlite.dao;

import java.sql.Connection;
import java.util.List;

/**
 * @Author jiyanghuang
 * @Date 2023/10/26 22:58
 */
public interface CommonDao<T> {

    /**
     * 增: 将对象添加到数据库中
     */
    void insert(Connection conn, T[] ary);

    /**
     * 增加对象,并且返回带ID的对象
     */
    T insert(Connection conn, T t);

    /**
     * 删: 根据id,删除数据库中的一条记录
     */
    void delete(Connection conn, Integer id);

    public default boolean deleteByUnique(Connection conn, T updateT) {
        return true;
    }

    /**
     * 根据id来修改数据
     * @param conn 连接
     * @param ary 数据
     */
    void update(Connection conn, T[] ary);

    /**
     * 根据id来修改数据
     * @param conn 连接
     * @param t 数据
     */
    void update(Connection conn, T t);

    public default boolean updateByUnique(Connection conn, T updateT) {
        return true;
    }

    /**
     * 查: 根据id,查询一条记录
     */
    T findById(Connection conn, Integer id);

    public default T findByUnique(Connection conn, T queryT){
        return null;
    }

    public default boolean checkExist(Connection conn, T queryT) {
        return null != findByUnique(conn, queryT);
    }

    public default  List<T> queryRelate(Connection conn, List<String> keys){
        return null;
    }

    public default  List<T> queryIn(Connection conn, List<String> keys){
        return null;
    }

    public default  List<T> searchLike(Connection conn, String searchValue){
        return null;
    }

    public default  List<T> searchLikeMTM(String searchValue){
        return null;
    }

    public default  List<T> searchLikeOneTM(String searchValue){
        return null;
    }

    /**
     * 针对
     * 1 对 多 再对 多
     * @param searchValue
     * @return
     */
    public default  List<T> searchLikeOneTMTM(String searchValue){
        return null;
    }


    public default String tableName(){
        return "";
    }

    /**
     * 交换位置; show_order1和show_order2进行交换
     */
    void exchangeShowOrder(Connection conn,Integer showOrder1,Integer showOrder2);


}
